home *** CD-ROM | disk | FTP | other *** search
/ Atari Mega Archive 1 / Atari Mega Archive - Volume 1.iso / language / pcl_src.zoo / 8-28-88-notes.txt < prev    next >
Text File  |  1988-09-01  |  21KB  |  538 lines

  1. Copyright (c) Xerox Corporation 1988. All rights reserved.
  2.  
  3.  
  4. These notes correspond to the "8/24/88 (beta) AAAI PCL" version of PCL.
  5.  
  6. Please read this entire document carefully.
  7.  
  8. There have been a number of changes since the 8/2/88 version of PCL.  As
  9. usual, these changes are part of our efforts to make PCL conform with
  10. the CLOS specicification (88-002R).  This release contains the big
  11. changes which the 7/7 through 8/2 releases were really getting ready
  12. for.
  13.  
  14. This version of PCL has been tested at PARC in the following Common
  15. Lisps:
  16.  
  17.   Symbolics 7.2
  18.   Coral 1.2
  19.   Lucid 3.0
  20.   Franz ??
  21.   Xerox Lyric
  22.   Xerox Medley (aka EnvOS Medley)
  23.   KCL (October 15, 1987)
  24.  
  25.  
  26. Most of the changes in this version of PCL fall into one of two
  27. categories.
  28.  
  29. The first major set of changes makes the order of arguments to setf
  30. generic functions and methods conform with the spec.  In addition, these
  31. changes allow the first argument to defmethod to be of the form (SETF
  32. <symbol>).
  33.  
  34. The second major set of changes have to do with slot access and instance
  35. structure.  Importantly, PCL now checks to see if a slot is bound, and
  36. calls slot-unbound if the slot is unbound.  This is a major change from
  37. previous releases in which slot access just returned NIL for slots which
  38. had not yet been set.  These changes affect all the functions which
  39. access the slots of an instance.  In addition, the generic functions
  40. which are called by the slot access functions in exceptional
  41. circumstances are affected.  This set of changes also include the
  42. implemenentation of the real initialization protocol as specified by
  43. 88-002R.
  44.  
  45. In addition, there are a number of other changes.  The most significant
  46. of these has to do with the symbols which the PCL package exports by
  47. default.
  48.  
  49. The rest of this document goes on to first describe the slot access
  50. changes, then describe the setf generic function changes, and finally
  51. describe some of the other minor changes.  
  52.  
  53. At the very end of this file is a new section which lists PCL features
  54. which are scheduled to disappear in future releases.  Please read this
  55. section and take it to heart.  This features will be disappearing.
  56.  
  57.  
  58. *** Changes to slot access and instance structure ***
  59.  
  60. This release includes a number of changes to the way slot access works
  61. in PCL.  Some of these changes are incompatible with old behavior.  Code
  62. which was written with the actual CLOS spec in mind should not be
  63. affected by these incompatible changes, but some older code may be
  64. affected.
  65.  
  66. The basic thrust of the changes to slot access is to bring the following
  67. functions and generic functions in line with the specification:
  68.  
  69.    slot-boundp
  70.    slot-exists-p
  71.    slot-makunbound
  72.    slot-missing      
  73.    slot-unbound
  74.    slot-value     
  75.  
  76.    slot-boundp-using-class
  77.    slot-exists-p-using-class
  78.    slot-makunbound-using-class
  79.    slot-value-using-class
  80.  
  81.    (setf slot-value)
  82.    (setf slot-value-using-class)
  83.  
  84.    change-class
  85.    make-instances-obsolete
  86.  
  87.    make-instance (temporarily called *make-instance)
  88.    initialize-instance (temporarily called *initialize-instance)
  89.    reinitialize-instance
  90.    update-instance-for-different-class
  91.    update-instance-for-redefined-class
  92.    shared-initialize
  93.  
  94. In this release, these functions accept the specified number of
  95. arguments, return the specified values, have the specified effects, and
  96. are called by the rest of PCL in the specified way at the specified
  97. times (with the exception that PCL does not yet call *make-instance to
  98. create its own metaobjects).  Because PCL now checks for unbound slots,
  99. you may notice a slight performance degradation in certain applications.
  100.  
  101. For complete information, you should of course see the CLOS specification.
  102. The rest of this note is a short summary of how this new behavior is
  103. different from the last release.
  104.  
  105. - Dynamic slots are no longer supported.  Various functions like
  106.   slot-value-always and remove-slot no longer exist.  Also,
  107.   slot-value-using-class now only accepts the three arguments as
  108.   described in the spec.  The two extra arguments having to do with
  109.   dynamic slots are no longer accepted.
  110.  
  111.   Shortly, we will release a metaclass which provides the now missing
  112.   dynamic slot behavior.
  113.  
  114. - slot-missing now receives and accepts different arguments.
  115.  
  116. - slot-unbound is now implemented, and is called at the appropriate
  117.   times.
  118.  
  119. - the initialization protocol specified in 88-002R is now almost
  120.   completely implemented.  The only difference is that the current
  121.   implementation does not currently check the validity of initargs.
  122.   So, no errors are signalled in improper initargs are supplied.
  123.  
  124.   Because of name conflicts with the two other initialization protocols
  125.   PCL currently supports, some of the specified initialization functions
  126.   do not have their proper name.  The mapping between names in the
  127.   specification and names in this version of PCL is as follows:
  128.  
  129.      SPECIFIED                                IN PCL
  130.  
  131.    make-instance                           *make-instance
  132.    initialize-instance                     *initialize-instance
  133.    reinitialize-instance                   <has proper name>
  134.    update-instance-for-different-class     <has proper name>
  135.    update-instance-for-redefined-class     <has proper name>
  136.    shared-initialize                       <has proper name>
  137.  
  138.  
  139.   In a future release of PCL, these functions will have their proper
  140.   names, and all the old, obsolete initialization protocols will
  141.   disappear.
  142.  
  143.   Convert to using this new wonderful initialization protocol soon.
  144.  
  145.   Sometime soon we will release a version of PCL which does significant
  146.   optimization of calls to make-instance.  This should speed up instance
  147.   creation dramatically, which should significantly improve the
  148.   performance of some programs.
  149.  
  150. - The function all-slots no longer exists.  There is a new generic
  151.   function called slots-to-inspect, which controls the default behavior
  152.   of describe.  It also controls the default behavior of the inspector
  153.   in ports which have connected their inspectors to PCL.  It specifies
  154.   which slots of a given class should be inspected.  See the definition
  155.   in the file high.lisp for more.
  156.  
  157. - the metaclass obsolete-class no longer exists.  The mechanism by which
  158.   instances are marked as being obsolete is now internal, as described
  159.   in the spec.  The generic-function make-instances-obsolete can be used
  160.   to force the instances of a class to go through the obsolete instance
  161.   update protocol (see update-instance-for-redefined-class).
  162.  
  163. - all-std-class-readers-miss-1, a generic function which was part of
  164.   the database interface code I sent out a few weeks ago, has a slightly
  165.   different argument list.  People using the code I sent out a few weeks
  166.   ago should replace the definition there with:
  167.  
  168.   (defmethod all-std-class-readers-miss-1
  169.          ((class db-class) wrapper slot-name)
  170.     (declare (ignore wrapper slot-name))
  171.     ())
  172.  
  173. - The implementation of the slot access generic functions have been
  174.   considerably streamlined.  The impenetrable macrology which used to be
  175.   used is now gone.
  176.  
  177. - Because the behavior of the underlying slot access generic functions
  178.   has changed, it is possible that some user code which hacks the
  179.   underlying instance structure may break.  Most of this code shouldn't
  180.   break though.  There have been some questions on the mailing list
  181.   about what is the right way to modify the structure of an instance.
  182.   I am working on that section of chapter 3 right now, and will answer
  183.   those questions sometime soon.
  184.  
  185.  
  186. *** Changes to SETF generic functions ***
  187.  
  188. This release of PCL includes a significant change related to the order
  189. of arguments of setf generic functions.  To most user programs, this
  190. change should be invisible.  Your program should run just fine in the
  191. new version of PCL.  Even so, there is some conversion you should do to
  192. your program, since DEFMETHOD-SETF is now obsolete and will be going
  193. away soon.
  194.  
  195. Some programs may take some work to adapt to this change.  This will
  196. be particularly true o